Self configuring peer to peer inter process messaging system

ABSTRACT

The system provides remote program execution, data transport, message communication, status communication and relocation of computer resources by using an arbiter associated with each computer. An originating arbiter of a process resource sends messages between arbiters that are received by each arbiter and then sent to a destination arbiter, if required. If necessary, the message may be retransmitted by intermediate arbiters and eventually received by the destination arbiter which interpret, and executes the message. As a result, the arbiters provide actual communication between the resources. Each arbiter may be resident in each of a plurality of computers which are part of a network linked by a network. Each arbiter independently reviews and processes the messages so that the computers communicate directly with each other on a peer to peer basis without the need for a master controlling program or other gateway for controlling and processing the messages as the messages are transmitted between computers.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. Ser. No. 09/679,189, filedOct. 3, 2000 which is a continuation of U.S. Ser. No. 08/832,787, filedApr. 4, 1997, now U.S. Pat. No. 6,128,647 which claims priority based onprovisional application Serial No. 60/014,887, filed Apr. 5, 1996.

BACKGROUND OF THE INVENTION

The traditional limitation of network based inter process messaging andcontrol systems is the incompatibility of the messaging and systemcontrol conventions between resources such as various network operatingsystems and network topologies. With the advent of more ubiquitousnetworks, significant effort has been expended to enable variousoperating systems to interact at a basic level by enabling the transferof data to and from other system environments through the use ofcompatible data files. The widespread availability of operating systemsupport for data file transfer between incompatible operatingenvironments provides an effective means of automating the transfer ofmessages and the execution of control instructions between systems thatmight otherwise be incompatible.

In imaging systems, many vendors have unsuccessfully tried to connectthe database directly to the imaging process software acrossincompatible networks. There is a need for a new operating systemindependent protocol which does not employ operating system dependentmessaging systems such as DDE or OLE and which operates at a higherlevel so that the protocol deals directly with the process software.

SUMMARY OF THE INVENTION

It is an object of this invention to provide a system and software whichallows peer to peer communication and remote process control betweenprocesses operating in incompatible operating environments without theneed for a master control program.

It is a further object of this invention to provide a messaging protocolwhich is available to all processes including incompatible processes andwhich allows each process to read and write files using the protocol.

It is another object of this invention to define a messaging paradigmwhich is based on file passing technology and which connects variousprocesses through the creation of files.

It is another object of this invention to provide a simple distributedcomputer environment (SDCE).

It is another object of this invention to provide a computer system thatis compatible with a large variety of systems and applications due tothe frequency with which other systems can write and copy the textfiles. It is another object of this invention to provide a computersystem capable of linking incompatible applications and computer systemsindependent of the computer operating systems being used.

It is another object to provide a system that can move messages andcontrol instructions across an arbitrary number of networks and otherconnections that allow for the eventual transmission of the messagesbecause of the ease of moving the small ASCII instruction files.

It is still another object of this invention to provide a system whichis capable of adding new functions

to obsolete and otherwise incompatible legacy systems.

It is another object of this invention to provide an interprocess peerto peer messaging system that can connect any number of processessequentially or in parallel.

It is an object of this invention to provide an interprocess peer topeer system that uses common virtual or physical disk space on anynetwork with file services to connect resources.

It is an object of this invention to provide an interprocess peer topeer system that allows processes to be stacked by the arbiter so thatmultiple steps can be performed as a single function, such as readrouting, package data and instruction file, encrypt file and copy file.

It is an object of this invention to provide an interprocess peer topeer system that allows processes to be stacked as a result of itsintrinsic design and as a result of it being able to execute processesby the arbiter.

In one form, the invention comprises a network system comprising aplurality of resources, some of which being incompatible with others, anetwork interconnecting the resources and an arbiter resident in each ofthe resources. The arbiter sends messages via the network and receivingmessages via the network. Each arbiter independently reviews andprocesses the messages from other arbiters of other resources so thatthe resources communicate directly with each other without the need fora master controlling program and without the need for other gateway forcontrolling and processing the messages as the messages are transmittedbetween resources.

In another form, the invention comprises a message system fortransmitting messages on a network between resources interconnected bythe network. An arbiter resident in each of the resources sends messagesvia the network and receives messages via the network, each said arbiterindependently reviewing and processing the messages so that theresources communicate directly with each other. As a result, there is noneed for a master controlling program or need for other gateway forcontrolling and processing the messages as the messages are transmittedbetween resources.

In another form, the invention comprises an inter process peer to peermessaging system for communicating between a plurality of networkedresources, some of which employ operating systems which are incompatiblewith each other. An arbiter message originator associated with each ofthe resources provides an arbiter message to be sent to the otherresources, the arbiter message instructing one of the other resources toexecute one or more of the following: remote program execution, datatransport, message communication, status communication and relocation ofcomputer resources. A message arbiter receiver associated with eachresource receives the arbiter messages from the other resources andresponds to the received arbiter message by executing one or more of thefollowing: retransmitting the arbiter message to another one of theresources; and interpreting and executing the received arbiter messagewherein the arbiter message originator and the arbiter message receiverdo the actual communication between their respective resources withoutthe need for a master controlling program and without the need for othergateway for controlling and processing the messages as the messages aretransmitted between resources.

In another form, the invention comprises an inter process peer to peermessaging process for communicating between a plurality of networkedresources, some of which employ operating systems which are incompatiblewith each other. The process comprising the steps of:

transmitting an arbiter message from one resource to the otherresources, the arbiter message instructing one of the other resources toexecute one or more of the following: remote program execution, datatransport, message communication, status communication and relocation ofcomputer resources; and

receiving the arbiter messages from the other resources and forresponding to the received arbiter message by executing one or more ofthe following: retransmitting the arbiter message to another one of theresources; and interpreting and executing the received arbiter messagewherein the actual communication between their respective resources isaccomplished without the need for a master controlling program andwithout the need for other gateway for controlling and processing themessages as the messages are transmitted between resources.

Other objects and features will be in part apparent and in part pointedout hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a logic diagram of the inter process messaging systemaccording to one preferred embodiment of the invention.

FIG. 2 is a flow chart of the logic steps performed by an arbiter of theinter process messaging

and control system according to one preferred embodiment of theinvention. Appendix A is a Visual Basic source code listing of thearbiter of the invention.

FIG. 3 illustrates the basic content of context defined and contentdefined messages transferred between different, incompatibleapplications which are linked by the inter process messaging systemaccording to one preferred embodiment of the invention.

FIG. 4 describes in detail the mechanism used by the master routingarbiter and any other arbiters to dynamically build routing tables inorder to determine how to move a control message from one process toanother. An example of an arbiter that uses fixed routing to movemessages from one scratch space to another is contained in FIG. 4A ofAppendix A.

FIG. 5 describes the nature of the Ping message that initially is sentto all locations and is used to establish routing on the network. ThePing message content is fully explained in this figure. After receipt ofthe Ping message, each arbiter sends out its own unique tableidentifying itself and the originating resource sending the Ping messagetakes an inventory of all the arbiters which send out tables in responseto the Ping message.

FIG. 6 describes a number of special pre-registered instructions fornetwork commands that are directly executed by the arbiter. Contextualarbiters use fixed pre-registered commands. An example of such anarbiter is contained in FIG. 3A of Appendix A.

FIG. 7 is a functional block diagram illustrating an image enablingprocess according to the invention on a

stand alone personal computer using a context defined simplifieddistributed computing environment (SDCE) and a local arbiter.

Corresponding reference characters indicate corresponding partsthroughout the drawings.

BRIEF DESCRIPTION OF THE APPENDIX

Appendix A, FIG. 1A illustrates source code for an identity file.

Appendix A, FIG. 2A illustrates source code for a multi-stepcommunication configuration requiring multiple message files to completethe instruction sequence.

Appendix A, FIG. 3A illustrates source code for implementing an arbiterprocess based on contextual file content.

Appendix A, FIG. 3B illustrates source code for implementing an arbiterprocess based on contextual file content.

Appendix A, FIG. 4A illustrates a source code program listing in Visualbasic of a message replicating arbiter that uses fixed routing to movemessages from one scratch space to another.

DETAILED DESCRIPTION OF THE INVENTION

The system of the invention uses a structured process for object andtoken passing with an ability to dynamically build network routesbetween processes resident on different or the same computer, i.e., peerto peer. The processes may be compatible, partially compatible orincompatible. The invention enables the directed transfer of messagefiles from one process to another process without having to have theoriginating process know the location of another process in aheterogeneous networking environment; the messages are transferredbetween process names not locations. The use of independent networkarbiter agents, one at each resource or group of resources, to copy andinterpret control files allows for a very sophisticated remote peer topeer and/or process to process communications and control. The use of afile based message paradigm according to the invention rather than a setof memory or operating system based variables, provides for much greaterflexibility to connect otherwise incompatible systems than would beallowed by other network operating system or process specific messagingsystems. The simplicity of writing files of the invention also makes itmuch more convenient to incorporate this interprocess communication andcontrol into a network of separate systems developed in incompatibleoperating environments. This is due to the ease with which the messagescan be copied between the source and target systems. The use of the filebased messaging system of the invention also allows obsolete legacysystems to communicate across a system with minimal programming.

The invention comprises means for automatically sending data, messages,and control instructions between processes operating in a singlecomputer or across a complex heterogeneous network environment. Thesystem was designed to write, optionally encrypt, copy, transmit,interpret and execute instructions, and move data based on instructionscontained in small, simple to create files. Each process sends messagesto an arbiter which has a resource list of all objects which can beexecuted. Arbiters may be general purpose or have a specific functionsuch as a replicator arbiter or one-sided (end node) arbiter.

In general, an arbiter according to the invention is an independentprocess which reviews a message including instructions and processes theinstructions of the message when the arbiter determines that the messagehas a token or address which matches the address of the resource withwhich it is associated or resident. Traditionally, network messagingsystems have a master control program (MCP) for controlling messagesbetween resources connected to the network. For example, centralizede-mail would be such a system. All messages passed through the mastercontrol program which acts as a gate keeper for maintaining timing,routing and compatibility. Therefore, the master control program isnecessary to allow communication between resources. The invention usesarbiters which avoid the need for such intervention by a master controlprogram and essentially avoid the need for a gate keeper. Arbiterscommunicate with each other by reading and writing the messages todesignated scratch spaces.

In general, traditional networks reach a point of difficulty addingadditional users or resources because of their complexity and theconcentrated loading which occurs as additional users or resourcesincrease. On the other hand, the invention allows the addition ofresources without any increase in complexity. An additional resource maybe added simply by providing a unique address to it and by having anarbiter which is able to determine or otherwise know its address. Allother arbiters would then be advised of the new address of that resourcein order to be able to communicate with the resource. In other words,the arbiters of the invention provide a gateway function betweenresources without the need for intervention of the type that the mastercontrol program requires.

The message file from an originating arbiter acts as a token whichidentifies which process is in control of an arbiter at any particulartime. The token also controls permission to read and execute the file.In other words, the message functions as a token that passes controlbetween particular arbiters. First, the destination arbiter verifiesthat the token is part of a valid message and then the destinationarbiter gives this message control by allowing the instructionsassociated with the token to take exclusive control of the destinationarbiter. When a destination arbiter receives a message or token, ittemporarily turns its message receiving subsystem off so that it doesnot receive other conflicting messages or tokens. After completing theanalysis and/or execution of a message, the destination arbiter then isready for the next message. The token is part of a larger message whichincludes logic embedded therein which instructs the destination arbiterto operate in a particular way and utilize the appropriate resources. Inother words, the message is a structured object and can have two forms:contextually defined messages and content messages as illustrated inFIG. 3. Contextually defined messages include content messages but alsoinclude inferred instructions interpreted from the message name. Thecontent message includes lines of code which define a particular actionand the way to execute it. The message, including a token, may beconsidered a virtual file. The name of the contextually defined messageis essentially the definition of the destination of the message. Theextension name defines the action to be taken.

In one preferred embodiment of the invention, the invention may includea multi-step communication configuration requiring multiple messagefiles to complete the instruction sequence. An example can be seen asimplemented as part of the source code included herewith. For example,see FIG. 2A, beginning at line 15.

One unique feature of the invention is that it is not specific to aparticular operating system but provides a messaging paradigm which canbe used with any type of operating system. As a result, the inventionmay be used to allow a mainframe to communicate with a desktop withoutthe need for a master control program. In general, the system of theinvention allows an interface between different, incompatible systems.For example, the invention has been used to allow a mainframe to drive aWindows program on a desktop computer without the need for DDE or OLEmessaging systems, which are specific to the Windows operating system,to be resident in the mainframe.

In one aspect of the invention, the system of the invention may be usedto allow imaging between incompatible systems. For example, a Suncomputer may scan a document and then provide a message to a PC whichcan then access the scanned document and print it. Most, if not allsystems, can read and write ASCII text files, so that it becomes clearthat it is easily possible to configure a network of incompatiblecomputers which can access each other's ASCII files by using the arbiterof the invention. Such a system would not require a translator or othermaster control program which would tend to complicate and slow down thecommunication between programs.

As noted above and illustrated in FIG. 7, it is also contemplated thatencryption may be used so that each message is encrypted to furtherenhance the security features of the network.

In summary, the invention comprises a network comprising a plurality ofresources or applications, some of which being incompatible with others.The network interconnecting the resources. An arbiter resident in eachof the resources sends messages as a message originator via the networkand receives messages as a message arbiter 106 via the network whereineach arbiter independently reviews and processes the messages from otherarbiters of other resources so that the resources communicate directlywith each other without the need for a master controlling program andwithout the need for other gateway for controlling and processing themessages as the messages are transmitted between resources. The networkincludes a distributed computing environment interconnecting systemsusing different operating systems and networking systems and wherein thearbiter message comprises ASCII text files as illustrated in FIG. 3 forthe transmission of instructions between resources. In particular, thearbiter message comprises independent task arbiters 100, 106 operatingacross the network that can dynamically interact with other taskarbiters without the need for a central master control system. Theindependent task arbiters are independent network agents acting underthe sole control of the messages being received. The resourcescommunicate directly with other resources via the independent taskarbiters without the intervention of any other process. The independentmessage arbiters provide asynchronous messaging between resources of thenetwork so that each generated message is transmitted through thenetwork independent of any other messages and the transmitted messagewill be acted on as it is received by the destination resource. Theoriginating resource executes other tasks after transmitting the messagearbiter thereby creating an intrinsically multi-tasking andmulti-threaded control system such that multiple arbiter messages can betransmitted through the network independently between multipleresources. The destination arbiter determines whether any necessary dataor programs are available for executing the controlled process andwrites a control file instructing other network arbiters to transmit thenecessary data or programs to the destination arbiter when thedestination arbiter determines that the necessary data or programs arenot available. Each arbiter employs messages which may be encrypted sothat the network is substantially secure.

The arbiter messages include text interconnecting resources across anetwork or interconnecting resources within a single computer. Eachresource processes the arbiter messages in its background whileperforming other functions in its foreground. Adding other computerprogram functions is accomplished by executing arbiter instruction filesin the background so that programs that provide additional functions canbe executed by other resources that can write the instruction fileswhereby this execution can be so tightly bound that the executedprograms appear to be part of the originating program. Data and softwareare remotely distributed by directly controlling linked computer systemsso that executed programs can do such things as copy files to remotelocations. The network may handle time independent instructions and thearbiters may be programmed to execute only at certain times and theprograms themselves can be programmed to execute at specific times orintervals by the resources whereby network traffic can be controlled tominimize traffic volume or processor requirements at particular times.The arbiter includes a message replicating arbiter that uses fixedrouting to move messages from one scratch space to another.

In another form, the invention comprises a message system fortransmitting messages on a network between resources interconnected bythe network. An arbiter resident in each of the resources sends messagesvia the network and receives messages via the network, each said arbiterindependently reviewing and processing the messages so that theresources communicate directly with each other. As a result, there is noneed for a master controlling program or need for other gateway forcontrolling and processing the messages as the messages are transmittedbetween resources.

In another form, the invention comprises an inter process peer to peermessaging system for communicating between a plurality of networkedresources, some of which employ operating systems which are incompatiblewith each other. An arbiter message originator associated with each ofthe resources provides an arbiter message to be sent to the otherresources, the arbiter message instructing one of the other resources toexecute one or more of the following: remote program execution, datatransport, message communication, status communication and relocation ofcomputer resources. A message arbiter receiver associated with eachresource receives the arbiter messages from the other resources andresponds to the received arbiter message by executing one or more of thefollowing: retransmitting the arbiter message to another one of theresources; and interpreting and executing the received arbiter messagewherein the arbiter message originator and the arbiter message receiverdo the actual communication between their respective resources withoutthe need for a master controlling program and without the need for othergateway for controlling and processing the messages as the messages aretransmitted between resources.

In another form, the invention comprises an inter process peer to peermessaging process for communicating between a plurality of networkedresources, some of which employ operating systems which are incompatiblewith each other. The process comprising the steps of:

transmitting an arbiter message from one resource to the otherresources, the arbiter message instructing one of the other resources toexecute one or more of the following: remote program execution, datatransport, message communication, status communication and relocation ofcomputer resources; and

receiving the arbiter messages from the other resources and forresponding to the received arbiter message by executing one or more ofthe following: retransmitting the arbiter message to another one of theresources; and interpreting and executing the received arbiter messagewherein the actual communication between their respective resources isaccomplished without the need for a master controlling program andwithout the need for other gateway for controlling and processing themessages as the messages are transmitted between resources.

Preferably, the process of the invention includes resources whichoriginate messages of simple ASCII text files and wherein the resourcesidentify the system identity of messages from the text file. The textfiles may contain a digital signature such as illustrated at line 12 ofAppendix A to prevent unauthorized tampering and/or to verify themessage source.

Coding Details

No particular programming language, computer system, or networkoperating system have been indicated for carrying out the variousprocedures described above. This is in fact due to the broadapplicability of this invention to many computer languages, computersystems and network operating systems. Computers which may be used inpracticing the invention are diverse and numerous. It is considered thatthe operations and procedures described as part of the invention aresufficiently disclosed to permit one of ordinary skill in the art topractice the instant invention. One preferred embodiment ofimplementation of the invention in Visual Basic source code is foundbelow as Appendix A.

Description of Preferred Embodiments Illustrated in the Figures

FIG. 1 shows a diagram that demonstrates the basic logic of the interprocess messaging system embodied by the invention. The processoriginating the message first configures its identity by reading itslocal identity file. In particular, a resource employs a messageoriginator 100 to read an originator ID 102. The identity fileestablishes several defaults for communication, the name of the process,and the location of the scratch space (e.g., RAM disk) to which theprocess is bound. The originating process writes its message files(described below) which contain its control instructions written withoptional encryption in a local storage area that is set in the identityfile and is known as a scratch space binding area 104. This area can beused by multiple processes to send messages back and forth. A specialprocess called a message arbiter 106 monitors this scratch space bindingarea for each new instruction file. When a new file is written, allarbiters monitoring this scratch space read it including a destinationarbiter which is identified by the file. After the destination arbiterreads it, the destination arbiter recognizes the file as including thedestination arbiter's address or token. As a result, the destinationarbiter interprets what should be done and executes the instructionscontained within the file. In FIG. 1, message arbiter 106 executes acontrol process. The instructions may consist of one or more of thefollowing: message replication in at least one other scratch space,execution of instructions, launching of new processes, erasing oldmessage files, or requesting that programs or data be copied so thatthey may be used or analyzed. The process is inherently asynchronousand, without direct connection between processes, the network ofarbiters handle message transmission and instruction execution. However,synchronous type behavior can be programmed into the system by providingfor a general result of the process 110 and an optional processconfirmation 112 so that execution and error conditions are returned tothe original process. An example identity file is contained in FIG. 1Aof Appendix A. Code demonstrating the writing of a message file andconfirming instruction file as it would be written by a process usingthe messaging system is demonstrated in FIG. 2A of Appendix A, beginningat line 21.

FIG. 2 describes the logic embedded in the invention to process andinterpret these message files. By transferring and executing messages ona peer to peer basis, the invention can be used to distribute data andsoftware, remotely execute programs and procedures, link heterogeneoussystems, display images, play multimedia and sound clips, and developdistributed computing applications. Process A is the message originator100 which may be any external process (e.g., database application orspreadsheet) that will communicate with another external process(control process 108) via the arbiter. Process A begins execution ofitself at step 202. At step 204, process A reads its local identity file102. At step 206, process A writes control instructions for the messagearbiter 106 of controlled process 108. These instructions are written tothe scratch space binding area 104 defined in the local identity filewhich is the originator ID 102 of the message originator 100. At step208, the message arbiter 106 reads the message header in the bindingarea 104 to determine the controlled process 108 to which the messagewill be sent. Optionally, the message may be encrypted. At step 210,message copies are transferred by the arbiters from the scratch space oforigin to the destination scratch space through an arbitrary number ofconnected scratch space areas. Arbiters connecting scratch spaces copyoriginal messages and destroy the actual original. At step 212, thearbiter executes the controlled process 108. In particular, the generalresult of process 110 is that the message is read by the destinationarbiter which executes the controlled process. This final destinationarbiter interprets the instruction set. The destination arbiter alsodetermines if required data and programs are inaccessible to thedestination process. In particular, at step 214, the destination arbiterdetermines whether the data sets and programs necessary to execute thecontrolled process are available. If the necessary data sets andprograms are available, the destination arbiter proceeds to step 216 andexecutes the controlled process. If the necessary data sets and programsare not available, the destination arbiter proceeds to step 218 andwrites a control file requesting the data and/or programs needed forexecuting the controlled process. After the data sets or programs arriveat step 220, the destination arbiter proceeds to step 216 and executesthe controlled process. In summary, the destination arbiter determineswhether any necessary data or programs are available for executing thecontrolled process and writes a control file instructing other networkarbiters to transmit the necessary data or programs to the destinationarbiter when the destination arbiter determines that the necessary dataor programs are not available.

FIG. 3 describes the basic content of the messages using two differentimplementations of the invention. Context defined messages (A) are easyto construct and control but they do not have the flexibility and powerof the content defined messages (B). The content defined messages (B)must at a minimum have a source ID which identifies the originatingprocess and a destination ID that tells where the message is to be sent.Data set and program lines in the message file identify the data andprograms needed to execute the instructions. Special instructions areprograms that have been given registered aliases to simplify using them.Keyboard execution provides a means of sending keystrokes to anapplication that is launched by the arbiter. Confirmation requestinstructs the destination arbiter to send two messages back to theoriginating arbiter; message received and a message regarding thesuccess of program execution when the launched programs are finishedrunning.

An example of code implementing an arbiter process based on contextualfile content is contained in FIG. 3A of Appendix A, beginning at line72. FIG. 3A demonstrates the contents of a context defined message file.The destination arbiter is defined by the filename. The controlledprocess is defined by the file extension. The data sets to be used bythe controlled process are defined by file contents.

FIG. 3B also demonstrates the contents of a content defined messagefile. An example of a code routine implementing an arbiter process basedon contextual file content is contained in FIG. 3B of Appendix A,beginning at line 374. This content code routine reads and executescontent defined messages and is used as an alternate to the context coderoutine in FIG. 3A of Appendix A for reading context defined messages.In other words, the content code routine of FIG. 3B of Appendix Aexecutes content based instruction files whereas the context coderoutine of FIG. 3A of Appendix A executes context based instructionfiles. The system determines whether the instruction files are contentor context based and applies the appropriate routine. The destinationarbiter is defined by the filename. The order to the lines in notcritical. The line beginning “Source ID:” specifies the identity of theprocess that originated the message. The line beginning “DestinationID:” specifies the identity of the destination arbiter. Any line(s)beginning “Data Set:” specifies the file(s) that contain the datanecessary to execute the controlled process. Any line(s) beginning“Program:” specifies the controlled process program(s) to be executed.Any line(s) beginning “Special Instructions:” specifies any specialinstructions required for the control process command line. Any line(s)beginning “Keyboard Execution:” specifies redirected key inputs when thearbiter acts as a keyboard robot for the controlled process. A linebeginning “Confirmation Request:” specifies whether the controlledprocess is to send an acknowledgement message of the its execution ofthe message to the controlled process. A line beginning “Return ID:”specifies the identity of a secondary destination arbiter to which theoutput of the controlled process will be sent. A line beginning “ReturnData Set:” specifies the file that will contain the output of thecontrolled process. A line beginning “Return Encryption Level:”specifies the type of security to be implemented in the return message,if any. A line beginning “Network Control:” specifies one or more of thefollowing: the public key of the arbiter or process originating themessage; the type of security implemented by the originating arbiter orprogram; and/or miscellaneous header information. The Date and Timelines specify date and time of the original message. The line beginningwith “Sequence Number:” specifies an arbitrary index identifying theorder in which messages were originated by the a specific process orarbiter so multiple messages can be sent by a particular process orarbiter to another process or arbiter without ambiguity of order.

FIG. 4 describes in detail the mechanism used by a routing arbiter andany other arbiter to dynamically build routing tables in order todetermine how an originating arbiter moves a control message from anoriginating process through various routing arbiters to a destinationarbiter associated with the destination process. An example of anarbiter that uses fixed routing to move messages from one scratch spaceto another is contained in FIG. 4A of Appendix A, beginning at line 626.Initially, at step 402, special ping instructions are written in allconnected scratch space binding areas 104 by the routing arbiter.Decision block 404 represents a step or series of steps to confirm thatall connected arbiters have read the ping message. These steps alsodetermine if other scratch spaces are connected. If spaces areidentified through which the ping message has not passed through before,the process proceeds to step 406 wherein the ping message is written tothe other scratch spaces. The process then returns to decision block402. If no spaces are identified so that all have received the pingmessage, the process proceeds to step 408 wherein a ping return messageis sent back to the routing arbiter by the receiving arbiter and thereceiving arbiter stores the route information to its master file.Finally, at step 410, the routing arbiter or source builds net tables ofconnected arbiters to continue with the actual transfer of instructionfiles.

FIG. 5 describes the nature of the Ping message that is used toestablish routing on the network as described in FIG. 4. The Pingmessage content is fully explained in this figure. 20

FIG. 6 describes a number of special pre-registered instructions fornetwork commands that are directly executed by the arbiter. Contextualarbiters use fixed pre-registered commands. An example of such anarbiter is contained in FIG. 3A of Appendix A, beginning at line 72.

There are five layers of message encryption used to protect networksecurity: 1) none; 2) message check digits using originating processdigital signature (DS); 3) encryption of whole message using destinationID and originating process; 4) encryption of instructions usingdestination ID and originating process; and 5) encryption based ondestination public key. Optionally, the message can be left asunencrypted ASCII; the message can be given a set of check digits usingthe originators identity as an encryption key; the message can beencrypted using the network digital signature (DS); the body of themessage can be encrypted using the destination's digital signature andthe originator's digital signature; and the message can be encryptedusing only the destinations public key. The encryption processes arearbitrary in nature and can use such techniques as digital signature,public and private key encryption. An example of these algorithms wouldbe the licensed RSA encryption techniques.

FIG. 7 is a functional block diagram illustrating an image enablingprocess according to the invention on a stand alone personal computerusing a context defined simplified distributed computing environment(SDCE) message and a local arbiter. In general, FIG. 7 illustrates theuse of a text file via an arbiter to control a process such as imagingor file viewing. The application may be any application such as adatabase program running on the personal computer. At step 701, theapplication reads a user keystroke which has been defined to execute thefunction of viewing a document image. At step 702, the applicationwrites an SDCE instruction file to the scratch space binding area 104.The instruction file is a text file including instruction data such asthe file identifier of the file to be imaged. In this case, theinstruction sequence also includes a commit file which instructs thearbiter to start the controlled process. At step 703, the applicationwrites the commit file. These first three steps are executed by theapplication.

The next three steps are executed by the arbiter of the stand alone PCwhich functions as both the originating arbiter and the destinationarbiter in a stand alone system. At step 704, the arbiter scans for amessage in the scratch space binding area on a periodic basis anddetects the commit file written by step 703. Next, at step 705, thearbiter reads and interprets the instruction file associated with thedetected commit file. At step 706, the arbiter executes a view programroutine (the controlled process) in response to the detectedinstructions and passes a data pointer which is part of the instructionfile to the view program routine. At step 707, the controlled process,i.e., the view program routine, executes and views the file. At step708, the user exits and the commit file is erased by the program. Atstep 709, the application resumes as a result of the commit file beingerased.

In view of the above, it will be seen that the several objects of theinvention are achieved and other advantageous results attained.

As various changes could be made in the above constructions, products,and methods without departing from the scope of the invention, it isintended that all matter contained in the above description and shown inthe accompanying drawings shall be interpreted as illustrative and notin a limiting sense.

What is claimed is:
 1. A network resource comprising: a networkinterface operable to link to a communications network; a scratch space;and a message arbiter operable to: monitor the scratch space; detect atext file asynchronously copied into the scratch space by a remotemessage arbiter through the network interface, the text file comprisinginstructions; determine whether the text file identifies the networkresource; if the text file identifies the network resource, execute theinstructions; and if the text file does not identify the networkresource, determine a remote scratch space based on a destinationnetwork resource identified by the text file and copy the text file intothe remote scratch space through the network interface.
 2. The networkresource of claim 1, wherein the message arbiter is further operable todetermine whether the text file identifies the network resource based ona filename of the text file.
 3. The network resource of claim 2, whereinthe filename includes a name and an extension, wherein the nameidentifies the network resource, the extension comprises theinstructions, and the text file includes data for use while executingthe instructions.
 4. The network resource of claim 1, wherein the textfile comprises content that includes a source identifier, a destinationidentifier, a data set, and the instructions.
 5. The network resource ofclaim 1, wherein the text file includes a reference pointer identifyinga location of binary information, and wherein the message arbiter isfurther operable to copy the binary information from a first location toa second location in response to the instructions.
 6. The networkresource of claim 1, wherein the instructions include at least one ofreplicate message, launch process, erase file, and copy data.
 7. Thenetwork resource of claim 1, wherein the network resource furthercomprises a process operable to generate a second text file in thescratch space.
 8. The network resource of claim 7, wherein the messagearbiter is further operable to: detect the second text file; determine asecond remote scratch space based on a filename of the second text file;and copy the second text file into the second remote scratch spacethrough the network interface.
 9. The network resource of claim 1,wherein the message arbiter is further operable to: identify datarequired to execute the instructions; generate a control file requestingthe data; and copy the control file into a second remote scratch spacethrough the network interface.
 10. The network resource of claim 1,wherein the message arbiter is further operable to: determine that thetext file has been encrypted; and decrypt the text file.
 11. A methodfor peer to peer messaging between network resources comprising:monitoring a scratch space associated with a network resource; detectinga text file asynchronously copied into the scratch space by a remotemessage arbiter through a network interface, the text file comprisinginstructions; determining whether the text file identifies the networkresource; if the text file identifies the network resource, executingthe instructions; and if the text file does not identify the networkresource, determining a remote scratch space based on a destinationnetwork resource identified by the text file and copying the text fileinto the remote scratch space through the network interface.
 12. Themethod of claim 11, wherein determining whether the text file identifiesthe network resource comprises comparing at least a portion of afilename of the text file with an identifier of the network resource.13. The method of claim 12, wherein the filename includes a name and anextension, wherein the name identifies the network resource, theextension comprises the instructions, and the text file includes datafor use while executing the instructions.
 14. The method of claim 11,wherein the text file comprises content that includes a sourceidentifier, a destination identifier, a data set, and the instructions.15. The method of claim 11, wherein the text file includes a referencepointer identifying a location of binary information, and wherein themethod further comprises copying the binary information from a firstlocation to a second location in response to the instructions.
 16. Themethod of claim 11, wherein the instructions include at least one ofreplicate message, launch process, erase file, and copy data.
 17. Themethod of claim 11, further comprising: detecting a second text filecreated in the scratch space by a process running on the networkresource; determining a second remote scratch space based on a filenameof the second text file; and copying the second text file into thesecond remote scratch space through the network interface.
 18. Themethod of claim 11, further comprising: identifying data required toexecute the instructions; generating a control file requesting the data;and copying the control file into a second remote scratch space throughthe network interface.
 19. The method of claim 11, further comprising:determining that the text file has been encrypted; and decrypting thetext file.
 20. Software for peer to peer messaging between networkresources, the software encoded in media and operable when executed to:monitor a scratch space associated with a network resource; detect atext file asynchronously copied into the scratch space by a remotemessage arbiter through a network interface, the text file comprisinginstructions; determine whether the text file identifies the networkresource; if the text file identifies the network resource, execute theinstructions; and if the text file does not identify the networkresource, determine a remote scratch space based on a destinationnetwork resource identified by the text file and copy the text file intothe remote scratch space through the network interface.
 21. The softwareof claim 20, further operable to determine whether the text fileidentifies the network resource by comparing at least a portion of afilename of the text file with an identifier of the network resource.22. The software of claim 21, wherein the filename includes a name andan extension, wherein the name identifies the network resource, theextension comprises the instructions, and the text file includes datafor use while executing the instructions.
 23. The software of claim 20,wherein the text file comprises content that includes a sourceidentifier, a destination identifier, a data set, and the instructions.24. The software of claim 20, wherein the text file includes a referencepointer identifying a location of binary information, and wherein thesoftware is further operable to copy the binary information from a firstlocation to a second location in response to the instructions.
 25. Thesoftware of claim 20, wherein the instructions include at least one ofreplicate message, launch process, erase file, and copy data.
 26. Thesoftware of claim 20, further operable to: detect a second text filecreated in the scratch space by a process running on the networkresource; determine a second remote scratch space based on a filename ofthe second text file; and copy the second text file into the secondremote scratch space through the network interface.
 27. The software ofclaim 20, further operable to: identify data required to execute theinstructions; generate a control file requesting the data; and copy thecontrol file into a second remote scratch space through the networkinterface.
 28. The software of claim 20, further operable to: determinethat the text file has been encrypted; and decrypt the text file.